﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using Ext.Net;
using System.Text.RegularExpressions;


public partial class Modules_HeThong_PhanQuyen_NguoiDung : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        txtUserName.Focus(true, 100);
    }


    public void UpdateUser(object sender, EventArgs e)
    {
        try
        {
            MembershipUser user = Membership.GetUser(hdfCurrentUsername.Value.ToString());
            if (!string.IsNullOrEmpty(txtResetPassword1.Text))
            {
                if (txtResetPassword1.Text.Length < 6)
                {
                    Util.ShowMessage("Mật khẩu phải nhiều hơn 6 kí tự!");
                    return;
                }
                string newPass = user.ResetPassword();
                user.ChangePassword(newPass, txtResetPassword1.Text);
            }

            string patternLenient = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
            Regex reLenient = new Regex(patternLenient);
            if (reLenient.IsMatch(txtEditEmail.Text))
            {
                if (user.Email != txtEditEmail.Text)
                {
                    user.Email = txtEditEmail.Text;
                }
            }

            Membership.UpdateUser(user);
            Util.ShowMessage("Cập nhật thành công");
            // PagingToolBar1.SetPageIndex(1);
            wdEditUser.Hide();
        }
        catch (Exception ex)
        {
            //  Ext.Msg.Alert("Lỗi tạo người dùng", ex.Message).Show();
            Util.ShowMessage("Đã có lỗi xảy ra" + ex.Message + ex.StackTrace);
        }
        X.Msg.Hide();

    }


    public void AddUser(object sender, EventArgs e)
    {
        string message = "";
        try
        {
            string patternLenient = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
            Regex reLenient = new Regex(patternLenient);
            if (!reLenient.IsMatch(txtEmail.Text))
            {
                message = "Email không đúng định dạng";
            }

            Membership.CreateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text);

            txtEmail.Text = "";
            txtPassword.Text = "";
            txtUserName.Text = "";

            X.Msg.Hide();
            Util.ShowMessage("Tạo tài khoản thành công!");
            //storeUser.
            PagingToolbar1.PageIndex = 1;
        }
        catch (Exception ex)
        {
            if (ex.Message.Contains("username is already"))
            {
                message = "Tạo người dùng không thành công, tên người dùng đã tồn tại , vui lòng chọn tên đăng nhập khác!";
            }
            if (ex.Message.Contains("password"))
            {
                message = "Tạo người dùng không thành công, mật khẩu không hợp lệ, mật khẩu ít nhất 6 ký tự!";
            }
            if (ex.Message.Contains("email"))
            {
                message = "Tạo người dùng không thành công, email đã có người dùng hoặc không hợp lệ, vui lòng chọn email khác!";
            }
            if (string.IsNullOrEmpty(message))
                message = "Lỗi không xác định, vui lòng thử lại.";
        }

        if (!string.IsNullOrEmpty(message))
        {
            Util.ShowMessage("Lỗi", message, 360, 120);
            //wdAddUser.Hide();
            X.Msg.Hide();
        }
    }


    [DirectMethod]
    public void LoadEditForm(string username)
    {
        wdEditUser.Show();

        if (!string.IsNullOrEmpty(username))
        {
            hdfCurrentUsername.SetValue(username);
            MembershipUser editUser = Membership.GetUser(username);
            txtEditEmail.Text = editUser.Email;
            txtEditUsername.Text = editUser.UserName;

            //chkLocked.Checked = editUser.IsLockedOut;
            txtResetPassword1.Text = string.Empty;
            FieldSet1.Collapse();
        }
        else
        {
            txtEmail.Text = "";
            txtUserName.Text = "";
        }
    }


    [DirectMethod]
    public void DeleteUser(string username)
    {
        if (username.ToLower() == "administrator")
        {
            Util.ShowMessage("Không thể xóa tài khoản administrator");
            return;
        }

        Membership.DeleteUser(username, true);
        //storeUser.FireEvent("reLoad()")
        //storeUser.Reload();
        Util.ShowMessage("Xóa thành công!");
        X.Msg.Hide();
    }

}